/**
 * 头像URL处理工具函数
 */

/**
 * 获取完整的头像URL
 * @param {string} avatarPath - 头像路径（可能是相对路径或完整URL）
 * @param {string} baseURL - 后端服务器基础URL，默认为空字符串（使用代理）
 * @param {boolean} addTimestamp - 是否添加时间戳避免缓存，默认为true
 * @returns {string|null} 完整的头像URL或null
 */
export function getFullAvatarUrl(avatarPath, baseURL = '', addTimestamp = true) {
  if (!avatarPath) return null

  let fullURL

  // 如果是完整URL，直接使用
  if (avatarPath.startsWith('http://') || avatarPath.startsWith('https://')) {
    fullURL = avatarPath
  } else {
    // 如果是相对路径，拼接基础URL
    if (baseURL) {
      fullURL = avatarPath.startsWith('/') ? `${baseURL}${avatarPath}` : `${baseURL}/${avatarPath}`
    } else {
      // 如果没有baseURL，直接使用相对路径（通过代理访问）
      fullURL = avatarPath.startsWith('/') ? avatarPath : `/${avatarPath}`
    }
  }

  // 添加时间戳避免浏览器缓存
  if (addTimestamp) {
    const separator = fullURL.includes('?') ? '&' : '?'
    fullURL = `${fullURL}${separator}t=${Date.now()}`
  }

  return fullURL
}

/**
 * 从用户对象中获取头像URL
 * @param {object} user - 用户对象
 * @param {string} baseURL - 后端服务器基础URL，默认为空字符串（使用当前域名/IP）
 * @param {number} version - 版本号，用于强制刷新缓存
 * @returns {string|null} 完整的头像URL或null
 */
export function getUserAvatarUrl(user, baseURL = '', version = null) {
  if (!user) return null

  // 优先使用 avatar_url，其次使用 avatar
  const avatarPath = user.avatar_url || user.avatar

  if (!avatarPath) return null

  let fullURL

  // 检查是否是完整的URL（包含协议）
  if (avatarPath.startsWith('http://') || avatarPath.startsWith('https://')) {
    // 如果是完整URL，检查域名是否匹配当前访问的域名/IP
    try {
      const avatarURL = new URL(avatarPath)
      const currentHost = window.location.host
      
      if (avatarURL.host !== currentHost) {
        // 域名不匹配，强制使用当前域名/IP重新构建URL
        fullURL = avatarURL.pathname // 只保留路径部分
        console.log(`🔄 头像URL域名不匹配，从 ${avatarURL.host} 转换为当前访问地址 ${currentHost}`)
      } else {
        // 域名匹配，直接使用
        fullURL = avatarPath
      }
    } catch (error) {
      // URL解析失败，按相对路径处理
      console.warn('头像URL解析失败，按相对路径处理:', error)
      fullURL = getFullAvatarUrl(avatarPath, baseURL, false)
    }
  } else {
    // 相对路径，正常处理
    fullURL = getFullAvatarUrl(avatarPath, baseURL, false)
  }

  // 添加缓存破坏参数
  if (version) {
    const separator = fullURL.includes('?') ? '&' : '?'
    fullURL = `${fullURL}${separator}v=${version}`
  } else {
    const separator = fullURL.includes('?') ? '&' : '?'
    fullURL = `${fullURL}${separator}t=${Date.now()}`
  }

  console.log(`🖼️ 最终头像URL: ${fullURL}`)
  return fullURL
}
